Day 05 已經把 STT、LLM 和 TTS 串成第一版完整語音對話。
目前流程是:
Microphone
↓
VAD
↓
Final STT
↓
LLM
↓
TTS
↓
Playback
今天先不加新功能,而是想看看:
使用者說完之後,到 AI 真正開始說話,中間到底花了多少時間?
目前主要可以拆成幾段:
Speech End
↓
Final STT
↓
LLM
↓
TTS
↓
First Audio
其中最關心的是:
Speech End → First Audio
也就是使用者講完,到真正聽見 AI 回答的等待時間。
VAD 要判斷使用者是不是真的說完。
如果門檻太短,可能把一句話提早切斷;但如果太長,又會增加等待時間。
例如:
我今天早上……有去附近走一下。
中間的停頓不代表已經說完。
尤其高齡使用者可能說得比較慢,因此之後還需要實際測試適合的 Speech End 門檻。
Day 05 的測試大約是:
| 階段 | 延遲 |
|---|---|
| Final STT | 0.23~0.25 s |
| LLM | 0.48~0.71 s |
| TTS | 0.23~0.52 s |
三次完整 Pipeline 測試:
Turn 1:1.61 s
Turn 2:0.99 s
Turn 3:1.14 s
平均:
Speech End → First Audio ≈ 1.25 秒
目前這組資料是用 WAV 音訊測試,因此還不能直接判定哪一段一定是最大的 Bottleneck,但可以先當作後續優化的 Baseline。
目前流程基本上是依序執行:
Final STT 完成
↓
等 LLM 全文完成
↓
TTS 開始
↓
等語音完成
↓
播放
即使每個模型本身都不算慢,等待時間還是會一段一段累積。
所以後面真正可以改善的,不一定只是換更快的模型,而是讓不同階段可以同時工作。
Day 02 已經加入 Rolling Transcription,但目前是每隔固定時間重新辨識累積音訊。
每隔一段時間
↓
重新辨識
↓
更新 Partial
這可以做到接近即時,但還不是真正的 Streaming ASR。
真正 Streaming ASR 會持續接收新的 Audio Chunk,保留前面的辨識狀態,再繼續往下辨識。
下一步準備嘗試:
Streaming ASR
↓
LLM Token Streaming
↓
Sentence / Chunk
↓
Streaming TTS
↓
Playback Queue
再和目前約 1.25 秒的 Baseline 比較,看看 Speech End → First Audio 能不能進一步縮短。